﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using FacturacionII.Clases;
namespace FacturacionII.Formularios
{
    public partial class frmMaestroEspecificacionProducto : FacturacionII.Formularios.frmMaestro
    {
        clsEspecificacionProducto objEspecificacionProducto;
        frmPrincipal principal;
        clsProducto objProducto;
        clsMarca objMarca;
        clsUnidadMedida objUnidadMedida;
        public frmMaestroEspecificacionProducto()
        {
            InitializeComponent();
        }

        private void frmMaestroEspecificacionProducto_Load(object sender, EventArgs e)
        {
            txtCodigoBarra.CharacterCasing = CharacterCasing.Upper;
            txtCriterioBuscar.CharacterCasing = CharacterCasing.Upper;
            txtDescripcionCorta.CharacterCasing = CharacterCasing.Upper;
            txtDescripcionLarga.CharacterCasing = CharacterCasing.Upper;
            objMarca = new clsMarca();
            objProducto = new clsProducto();
            objUnidadMedida = new clsUnidadMedida();
            objEspecificacionProducto = new clsEspecificacionProducto();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
            txtCriterioBuscar.Select();
            cboMarcas.DataSource = objMarca.CargarComboBox();
            cboMarcas.DisplayMember = "DESCRIPCION";
            cboMarcas.ValueMember = "CODIGO";
            cboProducto.DataSource = objProducto.CargarComboBox();
            cboProducto.DisplayMember = "DESCRIPCION";
            cboProducto.ValueMember = "CODIGO";
            cboUnidadMedida.DataSource = objUnidadMedida.CargarComboBox();
            cboUnidadMedida.DisplayMember = "DESCRIPCION";
            cboUnidadMedida.ValueMember = "CODIGO";
            this.grdListado.AutoGenerateColumns = false;
            this.grdListado.DataSource = objEspecificacionProducto.CargarDatosGridView();
            this.AsignarPropiedadesDataGridView();
        }

        private void sbpNuevo_Click(object sender, EventArgs e)
        {
            stcPaneles.SelectedTab = stiRegistro;
            this.LimparControles();
            cboProducto.Select();
        }

        public void LimparControles()
        {
            txtCantidad.Text = "0";
            txtCodigo.Text = "";
            txtCodigoBarra.Text = "";
            txtCriterioBuscar.Text = "";
            txtDescripcionCorta.Text = "";
            txtDescripcionLarga.Text = "";
            txtPrecioCompra.Text = "0";
            txtPrecioVenta.Text = "0";
            cboMarcas.SelectedIndex = -1;
            cboProducto.SelectedIndex = -1;
            cboUnidadMedida.SelectedIndex = -1;
        }

        private void btnNuevoLimpiar_Click(object sender, EventArgs e)
        {
            this.LimparControles();
        }

        private void btnNuevoCancelar_Click(object sender, EventArgs e)
        {
            this.LimparControles();
            grdListado.DataSource = objEspecificacionProducto.CargarDatosGridView();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
            txtCriterioBuscar.Select();
        }

        private void btnNuevoSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnNuevoGuardar_Click(object sender, EventArgs e)
        {
            objEspecificacionProducto = new clsEspecificacionProducto();
            principal = new frmPrincipal();
            objEspecificacionProducto.Guardar(
                int.Parse(cboProducto.SelectedValue.ToString()),
                txtCodigoBarra.Text.Trim(),
                txtDescripcionCorta.Text.Trim(),
                txtDescripcionLarga.Text.Trim(),
                decimal.Parse(txtPrecioCompra.Text),
                decimal.Parse(txtPrecioVenta.Text),
                decimal.Parse(txtCantidad.Text),
                cboUnidadMedida.SelectedValue.ToString(),
                int.Parse(cboMarcas.SelectedValue.ToString()),
                principal.getIdUsuario());
            MessageBox.Show("SE REGISTRO UNA NUEVA ESPECIFICACION DE PRODUCTO",
                "SISTEMA DE FACTURACION", 
                MessageBoxButtons.OK,
                MessageBoxIcon.Information);
            grdListado.DataSource = objEspecificacionProducto.CargarDatosGridView();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
            this.LimparControles();
        }

        private void sbpModificar_Click(object sender, EventArgs e)
        {
            stcPaneles.SelectedTab = stiListado;
            txtCriterioBuscar.Select();
        }

        private void btnModificarSeleccionar_Click(object sender, EventArgs e)
        {
            string codigo, codigoProducto, producto, codigoBarras, descripcionCorta,
                descripcionLarga, precioCompra, precioVenta, cantidad, codigoUnidad,
                unidad, codigoMarca, marca;

            codigo = grdListado.CurrentRow.Cells[0].Value.ToString();
            codigoProducto = grdListado.CurrentRow.Cells[1].Value.ToString();
            producto = grdListado.CurrentRow.Cells[2].Value.ToString();
            codigoBarras = grdListado.CurrentRow.Cells[3].Value.ToString();
            descripcionCorta = grdListado.CurrentRow.Cells[4].Value.ToString();
            descripcionLarga = grdListado.CurrentRow.Cells[5].Value.ToString();
            precioCompra = grdListado.CurrentRow.Cells[6].Value.ToString();
            precioVenta = grdListado.CurrentRow.Cells[7].Value.ToString();
            //cantidad = grdListado.CurrentRow.Cells[8].Value.ToString();
            codigoUnidad = grdListado.CurrentRow.Cells[9].Value.ToString();
            unidad = grdListado.CurrentRow.Cells[10].Value.ToString();
            codigoMarca = grdListado.CurrentRow.Cells[11].Value.ToString();
            marca = grdListado.CurrentRow.Cells[12].Value.ToString();

            txtCodigo.Text = codigo;
            cboProducto.SelectedValue = producto;
            txtCodigoBarra.Text = codigoBarras;
            txtDescripcionCorta.Text = descripcionCorta;
            txtDescripcionLarga.Text = descripcionLarga;
            txtPrecioCompra.Text = precioCompra;
            txtPrecioVenta.Text = precioVenta;
            //txtCantidad.Text = cantidad;
            cboUnidadMedida.SelectedValue = unidad;
            cboMarcas.SelectedValue = marca;

            stcPaneles.SelectedTab = stiRegistro;
        }

        private void grdListado_DoubleClick(object sender, EventArgs e)
        {
            string codigo, codigoProducto, producto, codigoBarras, descripcionCorta,
                descripcionLarga, precioCompra, precioVenta, cantidad, codigoUnidad,
                unidad, codigoMarca, marca;

            codigo = grdListado.CurrentRow.Cells[0].Value.ToString();
            codigoProducto = grdListado.CurrentRow.Cells[1].Value.ToString();
            producto = grdListado.CurrentRow.Cells[2].Value.ToString();
            codigoBarras = grdListado.CurrentRow.Cells[3].Value.ToString();
            descripcionCorta = grdListado.CurrentRow.Cells[4].Value.ToString();
            descripcionLarga = grdListado.CurrentRow.Cells[5].Value.ToString();
            precioCompra = grdListado.CurrentRow.Cells[6].Value.ToString();
            precioVenta = grdListado.CurrentRow.Cells[7].Value.ToString();
            //cantidad = grdListado.CurrentRow.Cells[8].Value.ToString();
            codigoUnidad = grdListado.CurrentRow.Cells[9].Value.ToString();
            unidad = grdListado.CurrentRow.Cells[10].Value.ToString();
            codigoMarca = grdListado.CurrentRow.Cells[11].Value.ToString();
            marca = grdListado.CurrentRow.Cells[12].Value.ToString();

            txtCodigo.Text = codigo;
            cboProducto.SelectedValue = producto;
            txtCodigoBarra.Text = codigoBarras;
            txtDescripcionCorta.Text = descripcionCorta;
            txtDescripcionLarga.Text = descripcionLarga;
            txtPrecioCompra.Text = precioCompra;
            txtPrecioVenta.Text = precioVenta;
            //txtCantidad.Text = cantidad;
            cboUnidadMedida.SelectedValue = unidad;
            cboMarcas.SelectedValue = marca;

            sbMantenimiento.ExpandedPanel = sbpModificar;
            stcPaneles.SelectedTab = stiRegistro;
        }

        private void btnModificarGuardarCambios_Click(object sender, EventArgs e)
        {
            objEspecificacionProducto = new clsEspecificacionProducto();
            objEspecificacionProducto.GuardarCambios(
                int.Parse(txtCodigo.Text.Trim()),
                int.Parse(cboProducto.SelectedValue.ToString()),
                txtCodigoBarra.Text.Trim(),
                txtDescripcionCorta.Text.Trim(),
                txtDescripcionLarga.Text.Trim(),
                decimal.Parse(txtPrecioCompra.Text),
                decimal.Parse(txtPrecioVenta.Text),
                decimal.Parse(txtCantidad.Text),
                cboUnidadMedida.SelectedValue.ToString(),
                int.Parse(cboMarcas.SelectedValue.ToString()),
                principal.getIdUsuario());
            MessageBox.Show("SE HA GUARDADO LO CAMBIOS",
                "SISTEMA DE FACTURACION",MessageBoxButtons.OK,
                MessageBoxIcon.Information);
            this.LimparControles();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
            txtCriterioBuscar.Select();
        }

        private void btnModificarCancelar_Click(object sender, EventArgs e)
        {
            this.LimparControles();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
            txtCriterioBuscar.Select();
        }

        private void btnModificarSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btmEliminarEliminar_Click(object sender, EventArgs e)
        {
            string codigo, descripcionCorta;
            objEspecificacionProducto = new clsEspecificacionProducto();
            codigo = grdListado.CurrentRow.Cells[0].Value.ToString();
            descripcionCorta = grdListado.CurrentRow.Cells[4].Value.ToString();
            DialogResult respuesta;
            respuesta = MessageBox.Show("¿DESEA ELIMINAR LA ESPECIFICACION DEL PRODUCTO " + descripcionCorta + " ?",
                "SISTEMA DE FACTURACION", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (respuesta == DialogResult.Yes)
            { 
                objEspecificacionProducto.Eliminar(int.Parse(codigo));
            }
            grdListado.DataSource = objEspecificacionProducto.CargarDatosGridView();
            sbMantenimiento.ExpandedPanel = sbpVer;
            stcPaneles.SelectedTab = stiListado;
            txtCriterioBuscar.Select();
        }

        private void btnEliminarSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnVerSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        public void AsignarPropiedadesDataGridView()
        {
            grdListado.AutoGenerateColumns = false;
            grdListado.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //grdListado.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            grdListado.Columns[0].DataPropertyName = "CODIGO";
            grdListado.Columns[1].DataPropertyName = "CODIGO_PRODUCTO";
            grdListado.Columns[2].DataPropertyName = "PRODUCTO";
            grdListado.Columns[3].DataPropertyName = "CODIGO_BARRAS";
            grdListado.Columns[4].DataPropertyName = "DESCRIPCION_CORTA";
            grdListado.Columns[5].DataPropertyName = "DESCRIPCION_LARGA";
            grdListado.Columns[6].DataPropertyName = "PCOMPRA";
            grdListado.Columns[7].DataPropertyName = "PVENTA";
            grdListado.Columns[8].DataPropertyName = "CANTIDAD";
            grdListado.Columns[9].DataPropertyName = "CODIGO_UNIDAD";
            grdListado.Columns[10].DataPropertyName = "UNIDAD";
            grdListado.Columns[11].DataPropertyName = "CODIGO_MARCA";
            grdListado.Columns[12].DataPropertyName = "MARCA";
        }

        private void txtCriterioBuscar_TextChanged(object sender, EventArgs e)
        {
            objEspecificacionProducto = new clsEspecificacionProducto();
            if (string.Empty == txtCriterioBuscar.Text.Trim())
            {
                grdListado.DataSource = objEspecificacionProducto.CargarDatosGridView();
            }
            else
            {
                grdListado.DataSource = objEspecificacionProducto.BuscarDatosGridView(
                    txtCriterioBuscar.Text.Trim());
            }
        }

    }
}
